#ifndef __INTERRUPT_KEY__
#define __INTERRUPT_KEY__

#include <linux/init.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/fs.h>
#include <linux/cdev.h>
#include <linux/slab.h>
#include <linux/device.h>
#include <linux/uaccess.h>
#include <linux/io.h>
#include <linux/ioport.h>
#include <linux/platform_device.h>
#include <linux/gfp.h>
#include <linux/gpio/consumer.h>
#include <linux/of_gpio.h>
#include <linux/interrupt.h>
#include <linux/of_irq.h>
#include <linux/input.h>

#define KEY_NUMBER	5

//#define USING_TASKLET

struct key_handle{
	uint32_t id;
	uint32_t key_code;
	unsigned int irq;
	struct gpio_desc *key_gpio;
	struct input_dev *inputdev;
	struct timer_list timer;
#ifdef USING_TASKLET
	struct tasklet_struct tasklet;
#else
	struct work_struct work;
#endif
	struct list_head node;
};

#endif
